

/*
为了防止数据竞争，可以采用atomicAdd之类的。注意，这里是atomicAdd(ptr, val)，第一个参数是个指针。它指向的地址的数值+val(接下来的大部分原子操作都是这种)

atomicExch无条件地用val替换存储在ptr中的值，并返回原来存储在ptr中的值。

原子算术函数在
目标内存位置上执行简单的算术运算，包括加、减、最大、最小、自增和自减等操作。原
子位运算函数在目标内存位置上执行按位操作，包括按位与、按位或、按位异或。原子替
换函数可以用一个新值来替换内存位置上原有的值，它可以是有条件的也可以是无条件
的。不管替换是否成功，原子替换函数总是会返回最初存储在目标位置上的值。

在内核中，任何不正确的省略尾数f的声明（pi＝3.14i59）都会自动地被NVCC编译器转换成双精度数。（在host中可以不加，但最好还是加上养成习惯。）


*/


















